=== 固件升级总览 ===

固件升级整个过程包括：

* 固件构建(Build)
* 固件打包(Package)
* 固件发布(Rease)
* 检查固件版本(Compare Version)
* 下载固件包(Download)
* 验证固件包(Validation)
* 重启并升级(Upgrading)

=== 固件构建 ===

固件是通过 Jenkins server构建的， [http://192.168.8.29/job/aria-paigo-images/ aria-paigo-rootfs-REBUILD]项目每次构建的时候，会获取paigo-qt项目的master分支最新提交的版本。

[http://192.168.8.29/job/aria-paigo-images/ aria-paigo-images]项目是用于初次烧机卡使用的，它依赖于aria-paigo-rootfs-REBUILD项目。

最新的固件下载URL是[http://192.168.8.29:81/aria-paigo-buildroot-REBUILD/aria-paigo-rootfs-latest.tar.xz]，它的版本是构建时的时间戳。


=== 固件打包 ===

固件打包脚本build-firmware-package.sh会下载当前最新的固件、固件md5文件、moudles包，然后将它们打包成zip格式。如果同时需要升级STM32固件，也一同将paigo_stm32.bin文件打包进来。

    #!/bin/sh
    rm -rf /tmp/firmware
    mkdir -p /tmp/firmware
    wget -O /tmp/firmware/rootfs.tar.xz http://192.168.8.29:81/aria-paigo-buildroot-REBUILD/aria-paigo-rootfs-latest.tar.xz
    wget -O /tmp/firmware/rootfs.md5 http://192.168.8.29:81/aria-paigo-buildroot-REBUILD/aria-paigo-buildroot-REBUILD-MD5SUMS-latest
    wget -O /tmp/firmware/kmods.tar.xz http://192.168.8.29:81/aria-psp-kernel-paigo/latest-kmods.tar.xz
    cd /tmp/firmware
    zip firmware.zip rootfs.tar.xz rootfs.md5 kmods.tar.xz
    mv firmware.zip ~/

=== 固件发布 ===

=== 固件版本 ===

固件版本文件是 '''/jenkins_version.txt'''


paigo-qt会检查 [http://paigo.g77k.com/api/v1/versions/latest_firmware?device_id=000000000000 http://paigo.g77k.com/api/v1/versions/latest_firmware?device_id=000000000000] 中返回的当前最新版本信息，如果本地版本与服务器上的固件包版本不一致，会下载最新固件包。

=== 固件包格式规范 ===

firmware.zip包中有4个文件：

* files.meta
* paigo_os.zip
* paigo_resources.zip
* paigo_stm32.bin
* paigo_knowles.bin

其中files.meta文件里记录了更新文件的md5信息。样例文件内容如下：

  4b6ebca5cabd0ef383d7e15def239510,M100.3.0.22_B69946_Haipai_StoryRobot_Paigo_MCFFillIn,paigo_knowles.bin
  1d0e8c8930346ce2d4040a2c04aae559,20161231.1705,paigo_os.zip
  7a83d9d2d726950419839ee0c725340a,20170102.1101,paigo_resources.zip
  5114dc5f5be9d3041db80e8cc47e3a33,20161230-02,paigo_stm32.bin

paigo_os.zip 是更新linux系统的包，zip中的文件如下：

* kmods.tar.xz
* rootfs.md5
* rootfs.tar.xz
* uImage